perm filename ARMUS[SYS,HE]7 blob
sn#057821 filedate 1973-08-15 generic text, type T, neo UTF8
00100 IFN SIMU,< ;THIS IS SIMULATION ONLY
00200 ARM.IN: SETZM INRUN ;TO CALL GAIN AND CHANGE JOBNAM TO [ARM]
00300 SETOM ARMINI ;INDICATES ARM.IN HAS BEEN CALLED
00400 PUSHJ P,GAIN
00500 ARM.ST: SETO 1, ;INDICATES END OF RUN
00600 SKIPN ARMINI
00700 POPJ P,
00800 MOVEM 16,SSAVE+16 ;SAVE SAIL AC'S EXCEPT FOR STACK
00900 MOVEI 16,SSAVE
01000 BLT 16,SSAVE+15
01100 SKIPE INRUN
01200 JRST[ HRLZI 16,MSAVE ;PUT BACK IN RUN AC'S
01300 BLT 16,15
01400 MOVE 16,MSAVE+16
01500 JRST SSW] ;AND RETURN TO SPACE WAR
01600 JRST GETMES
01700 INRUN: 0 ;IN THE MIDDLE OF A RUN DO NEXT TICK
01800 ARMINI: 0 ;ARM.IN HAS BEEN CALLED
01900 SSAVE: BLOCK 17 ;SAIL AC'S
02000 MSAVE: BLOCK 17 ;USER AC'S
02100 WAIT: HRLZI 16,SSAVE ;PUT BACK AC'S
02200 BLT 16,15
02300 MOVE 16,SSAVE+16
02400 SETZM INRUN
02500 POPJ P,
02600 GETMES: SETOM INRUN
02700 >
02800 IFE SIMU,<
02900 START: MOVE P,[XWD -PDLL,UPDL]
03000 PUSHJ P,GAIN
03100 OUTSTR[ASCIZ/!
03200 /]
03300 WAIT:
03400 >
03500 WRCV EXE
03600 HLRZ 5,EXE
03700 CAIE 5,MASTER
03800 JRST[ MOVEI 3,VERSN
03900 JRST FINISH]
04000 WAITED: MOVE 1,SEGJOB
04100 HRRZM 1,JOB
04200 HLRZM 1,SEG
04300 IFN REPORT+TRACK,<
04400 MOVE 1,[IOWD DBL-100,DATO]
04500 MOVEM 1,DATPT ;DATA POINTER
04600 MOVEM 1,DATIWD ;OUTPUT POINTER
04700 >
04800 SETZB 3,TRAJER
04900 MOVEI 0,0
05000 LDB 1,[POINT 3,EXE,35]
05100 CAIG 1,1
05200 JRST READ
05300 IFE ARMWORK,<
05400 MOVEI 3,NOTHER
05500 JRST FINISH
05600 >
05700 IFN REPORT+TRACK,< ;WRITE OUT DATA
05800 INIT 15,17
05900 SIXBIT /DSK/
06000 0
06100 JRST NDM
06200 MOVE 2,FILE
06300 MOVEM 2,DFILE
06400 MOVE 2,PPPN
06500 MOVEM 2,DPPPN
06600 IFN TRACK,<
06700 SKIPE WALK
06800 JRST[ LOOKUP 15,DFILE
06900 JRST NDMS
07000 MOVE 2,[IOWD DBL,DATO]
07100 MOVEM 2,DATPT
07200 INPUT 15,1
07300 JRST EXFN]
07400 >
07500 ENTER 15,DFILE
07600 JRST[NDMS:MOVEI 3,NODATA
07700 SUB 17,[XWD 1,1]
07800 JRST FINISH]
07900 >
08000 EXFN: CAIN 1,3
08100 JRST[ MOVE 4,EXE
08200 TRNN 4,HOLDF
08300 JRST [ SKIPE ARGS
08400 SOS JUMPBK
08500 JRST MOVON]
08600 SOS 1,STKPTR
08700 MOVEI 2,(1)
08800 LDB 3,[POINT 9,EXE,26]
08900 SUBI 1,(3)
09000 HRLI 1,ARGS
09100 BLT 1,(2)
09200 TRNE 4,RELOCF
09300 JRST[ MOVE 1,STKPTR
09400 SUBI 1,(3)
09500 SUB 1,CBUFS
09600 HRRM 1,@STKPTR
09700 JRST BPTR]
09800 BPTR: SOS STKPTR
09900 MOVON: SETOM FUNCT
10000 JRST SSW]
10100 CAIE 1,2
10200 JRST[ MOVEI 3,INVMES
10300 JRST FINISH]
10400 SETZM FUNCT
10500 HRREI 2,BUF-1001
10600 MOVEM 2,CBUFS
10700 SETOM BUF
10800 SETZM DOING ;TRAJECTORY SET UP FOR
00100 SKIPE BAND
00200 JRST[ MOVEI 1,BUF
00300 MOVEM 1,GOODIE
00400 MOVEI 1,1001
00500 MOVEM 1,GOODIE+1
00600 SETZM GOODIE+2
00700 MOVE 14,BAND
00800 UFBRD 14,GOODIE
00900 JRST RE
01000 SKIPN BUF+1000
01100 JRST[ SETZM BLOCKS
01200 MOVEI 1,BUF2
01300 MOVEM 1,NXTBUF
01400 SETZM @NXTBUF
01500 JRST ZDTH]
01600 MOVEI 1,BUF2
01700 MOVEM 1,GOODIE
01800 MOVEI 1,20
01900 MOVEM 1,GOODIE+2
02000 UFBRD 14,GOODIE
02100 JRST RE
02200 MOVEI 1,=74
02300 SKIPN BUF2+1000
02400 MOVEI 1,0
02500 MOVEM 1,BLOCKS
02600 MOVEI 1,40
02700 MOVEM 1,GOODIE+2
02800 MOVEI 1,BUF
02900 MOVEM 1,NXTBUF
03000 MOVNS BUF2
03100 JRST ZDTH]
00100 MOVE 1,FILE
00200 MOVEM 1,LFILE
00300 MOVE 1,PPPN
00400 MOVEM 1,LPPPN
00500 INIT 16,17
00600 SIXBIT/DSK/
00700 XWD 0,0
00800 JRST[NDM: MOVEI 3,NODEV
00900 JRST FINISH]
01000 LOOKUP 16,LFILE
01100 JRST[ MOVEI 3,NOFILE
01200 JRST FINISH]
01300 MOVS 1,LPPPN ;FILE LENGTH
01400 MOVN 1,1
01500 ASH 1,-11
01600 MOVEM 1,BLOCKS
01700 SOSGE BLOCKS
01800 JRST FINISH
01900 MOVE 10,[IOWD 1000,BUF]
02000 SETZ 11,
02100 IN 16,10
02200 JRST[ SOSGE BLOCKS
02300 JRST[ MOVEI 1,BUF2
02400 MOVEM 1,NXTBUF
02500 SETZM @NXTBUF
02600 JRST ZDTH]
02700 ADDI 10,1001
02800 IN 16,10
02900 JRST[ MOVEI 1,BUF
03000 MOVEM 1,NXTBUF
03100 MOVNS BUF2
03200 JRST ZDTH]
03300 JRST RE]
03400 JRST RE
00100 ZDTH:
00200 MOVE 1,[XWD DELTH,DELTH+1]
00300 SETZM DELTH
00400 BLT 1,DELTH+5
00500 MOVEI 1,=60
00600 MOVEM 1,STWT
00700 MOVNS BUF
00800 SSW:
00900 IFE USER+TRACK,<LOCK 1,>
01000 PUSHJ P,SPACE
01100 WWS:
01200 IFE REPORT+TRACK<
01300 IFE USER<
01400 MOVEI 1,1
01500 CALLI 1,31
01600 >
01700 >
01800 MOVE BITSAV
01900 TRNE DTST
02000 JRST BACK
02100 MOVE 1,@NXTBUF
02200 JUMPGE 1,.+2 ;MORE TRAJECTORY TO COME
02300 JRST[ SOSGE BLOCKS
02400 JRST[ SETZM @NXTBUF ;ALL DONE MAKK THIS AS LAST
02500 RELEASE 16,
02600 JRST WDO]
02700 SKIPE BAND
02800 JRST[ MOVE 1,NXTBUF
02900 MOVEM 1,GOODIE
03000 UFBRD 14,GOODIE
03100 JRST RBD
03200 MOVE 1,NXTBUF
03300 SKIPN 1000(1)
03400 SETZM BLOCKS
03500 MOVEI 1,20
03600 ADDM 1,GOODIE+2
03700 JRST ROK]
03800 MOVE 10,NXTBUF
03900 SOJ 10,
04000 HRLI 10,-1000
04100 IN 16,10
04200 JRST[ROK:MOVE 1,NXTBUF
04300 MOVNS (1)
04400 ADDI 1,1001
04500 CAILE 1,BUF2
04600 MOVEI 1,BUF
04700 MOVEM 1,NXTBUF
04800 JRST WDO]
04900 RBD: MOVE 1,NXTBUF ;READ ERROR
05000 SETZM @NXTBUF ;MARK AS LAST
05100 WFF: MOVE BITSAV ;AND WAIT FOR IT TO END
05200 TRNN DTST
05300 JRST WFF
05400 RE: MOVEI 3,REAERR
05500 JRST BACK]
05600 WDO:
05700 IFN SIMU,<
05800 MOVEM 16,MSAVE+16
05900 MOVEI 16,MSAVE
06000 BLT 16,MSAVE+15
06100 HRLZI 16,SSAVE
06200 BLT 16,15
06300 MOVE 16,SSAVE+16
06400 SETZ 1,
06500 POPJ P,
06600 >
06700 IFE REPORT+TRACK,<
06800 IFE USER,<JRST WWS>
06900 IFN USER,<JRST SSW>
07000 >
07100 IFN TRACK,<
07200 SKIPE WALK
07300 JRST SSW
07400 >
07500 IFN REPORT+TRACK,<
07600 HRRZ 1,DATIWD ;START TO WRITE
07700 CAIL 1,DATO+DBL-1
07800 JRST DOD
07900 HRRZ 2,DATPT ;LAST LOC FILLED
08000 WA: SUBI 2,(1)
08100 JUMPL 2,[MOVEI 2,DATO+DBL-1
08200 JRST WA]
08300 TRZ 2,177
08400 JUMPN 2,[ MOVN 1,2 ;MORE THAN 200 WORDS SO WRITE IT OUT
08500 HRLM 1,DATIWD ;NEG WORD COUNT
08600 OUT 15,DATIWD
08700 HRRZ 1,DATIWD
08800 ADDI 1,(2)
08900 HRRM 1,DATIWD
09000 JRST DOD]
09100 DOD:
09200 IFE USER,<JRST WWS>
09300 IFN USER,<JRST SSW>
09400 >
00100 BACK:
00200 IFE USER+TRACK,<UNLOCK 1,>
00300 SPCWAR 636367
00400 MOVEI 0,0
00500 SKIPE 3,TRAJER
00600 JRST[ IFE DEB+SIMU,<
00700 IFN TRACK,<SKIPN WALK>
00800 TRO RONLY
00900 MOVEM BITSAV
01000 MOVEI 1,1
01100 CALLI 1,31
01200 DRSW: PUSHJ P,SPACE
01300 DRR: MOVE BITSAV
01400 TRNN DTST
01500 IFE USER,<JRST DRR>
01600 IFN USER,<JRST DRSW>
01700 SPCWAR 636367
01800 MOVEI 0,0
01900 PUSHJ P,SETSET
02000 >
02100 JRST NOERR]
02200 IFN SIMU,<PUSHJ P,SETSET>
02300 NOERR: IFE USER,<RELEASE 17,
02400 RELEASE 14,
02500 >
02600 IFN REPORT+TRACK,<
02700 PUSHJ P,CLODAT
02800 CLOSE 15,
02900 >
03000 SKIPN SEG
03100 JRST[ MOVEM 3,STATUS
03200 MOVE 2,[XWD TH,THETA]
03300 BLT 2,THETA+6
03400 MOVE 2,[XWD TORE,ARGS+10]
03500 BLT 2,ARGS+15
03600 MOVE 1,JOB
03700 MOVEM 1,REPLY
03800 SEND REPLY
03900 JRST WAIT
04000 JRST WAIT]
04100 MOVE 2,SEG
04200 CALLI 2,400016
04300 JRST WAIT
04400 HRRZ 4,NAME
04500 MOVE 2,(4)
04600 HLRZ 4,NAME
04700 MOVEM 2,(4)
04800 PUSHJ P,[SETNAM:MOVE 2,THETA
04900 MOVEI 4,6(2)
05000 HRLI 2,TH
05100 IFN TRACK,<SKIPN WALK>
05200 BLT 2,(4)
05300 MOVE 2,ETOR
05400 MOVEI 4,6(2)
05500 HRLI 2,TORE
05600 BLT 2,(4)
05700 PUSHJ P,SETFLT
05800 MOVEM 3,@STATUS
05900 MOVE 4,DOING
06000 MOVEM 4,@SEGMENT
06100 HRRZ 2,NAME
06200 SETZM (2)
06300 HRLZI 2,40
06400 MOVEM 2,IBIT
06500 INTUUO 4,JOB
06600 JUMP
06700 MOVEI 2,0
06800 CORE2 2,
06900 JFCL
07000 POPJ P,]
07100 JRST WAIT
00100 IFN REPORT+TRACK,<
00200 CLODAT:IFN TRACK,<
00300 SKIPE WALK
00400 POPJ P,
00500 >
00600 NWI: HRRZ 1,DATIWD
00700 HRRZ 2,DATPT
00800 SUBI 2,(1)
00900 JUMPL 2,[ HRRZI 2,DATO+DBL-1
01000 SUBI 2,(1)
01100 MOVN 2,2
01200 HRLM 2,DATIWD
01300 SKIPE 2
01400 OUT 15,DATIWD
01500 MOVEI 2,DATO-1
01600 HRRM 2,DATIWD
01700 JRST NWI]
01800 ADDI 2,200
01900 TRZ 2,177
02000 MOVN 1,2
02100 HRLM 1,DATIWD
02200 OUT 15,DATIWD
02300 POPJ P,
02400 >
02500
00100 READ: SETZM STWT
00200 SKIPG 1
00300 TRO POTREAD
00400 TRO RONLY
00500 RSW: PUSHJ P,SPACE
00600 RSWW: MOVE BITSAV
00700 TRNN DTST
00800 IFE USER,<JRST RSWW>
00900 IFN USER,<JRST RSW>
01000 MOVE 3,TRAJER
01100 PUSHJ P,SETSET
01200 JRST FINISH
01300
00100 SPACE: MOVEI 1,=180
00200 MOVEM 1,COUNT
00300 TRO TRIP
00400 LDB 1,[POINT 1,EXE,32]
00500 MOVEM 1,SOTCHS
00600 JUMPE 1,.+2
00700 TRO STCH
00800 IFN DEB,<SETZM ETIM>
00900 MOVEM BITSAV
01000 IFN TRACK,<SKIPE WALK>
01100 IFN TRACK+USER,<
01200 JRST[ MOVEM 17,USAVE+17
01300 MOVEI 17,USAVE
01400 BLT 17,USAVE+16
01500 JSR STRADR-1
01600 HRLZI 17,USAVE
01700 BLT 17,16
01800 MOVE 17,USAVE+17
01900 POPJ P,]
02000 >
02100 IFE USER,<
02200 GETAD: INIT 17,417
02300 SIXBIT /AD/
02400 XWD 0,0
02500 JRST[ POP P,3
02600 MOVEI 3,ADBUS
02700 JRST FINISH]
02800 SPCWAR 1,STRADR
02900 >
03000 POPJ P,
03100
03200 UPDL: FINISH
03300 BLOCK PDLL
03400
03500 IFN USER+TRACK,<
03600 USAVE: BLOCK 20
03700 >
03800 IFN TRACK,<WALK:0>
03900
04000 IFN REPORT+TRACK,<
04100 DFILE: 0
04200 SIXBIT/TMP/
04300 0
04400 DPPPN: 0
04500 >
04600 LFILE: 0
04700 SIXBIT/TRJ/
04800 0
04900 LPPPN: 0
05000
05100 GOODIE: BLOCK 3
00100 FINISH: SPCWAR 636367
00200 IFE USER,<RELEASE 17,
00300 RELEASE 14,
00400 >
00500 SKIPE SEG
00600 JRST [ATSEG: MOVE 1,SEG
00700 CALLI 1,400016
00800 JRST WAIT
00900 PUSHJ P,SETNAM
01000 JRST WAIT]
01100 MOVEM 3,STATUS
01200 MOVE 1,[XWD TH,THETA]
01300 BLT 1,THETA+6
01400 MOVE 1,JOB
01500 MOVEM 1,REPLY
01600 SKIPN 1
01700 JRST WAITED
01800 SEND REPLY
01900 JRST WAIT
02000 JRST WAIT
02100
02200 REPLY: 0
02300 EXE
02400 SEG: 0
02500 SOTCH: 0
02600 JOB: 0
02700 IBIT: 000040000000
02800 TICKS: 0
00100 SETFLT: SKIPN NERVES
00200 POPJ P,
00300 MOVEI 6,1
00400 MOVE 4,NERVES
00500 STL: MOVE 5,OBS(6)
00600 MOVEM 5,(4)
00700 ADDI 4,=16
00800 SOJGE 6,STL
00900 POPJ P,
01000
01100 XLIST
01200 SUBTTL SPACEWAR CODE CONTROL LOU PAUL
01300 LIST